package com.zzh.zzhaiagent.domain.vo;

import com.zzh.zzhaiagent.domain.entity.UserProfiles;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.time.ZoneOffset;

/**
 * @author zzh
 * @since 2025-05-07
 * 返回用户的登录相关token
 */
@Data
@EqualsAndHashCode(callSuper = false)
public class UserLoginTokenVO implements Serializable {

    private static final long serialVersionUID = 1L;

    private String accessToken;

//    private String refreshToken;//应该redis缓存

    private String uuid;//这是存储refreshToken的key

    private String expireTime;

    private String userAccount;

    private Boolean isFirstLogin;//是否第一次登录

    //构建登录的token
    public static UserLoginTokenVO build(String accessToken, String uuid) {
        UserLoginTokenVO userLoginTokenVO = new UserLoginTokenVO();
        userLoginTokenVO.setAccessToken(accessToken);
//        userLoginTokenVO.setRefreshToken(refreshToken);
        userLoginTokenVO.setUuid(uuid);
        //设置过期时间为1小时 后续处理 todo
        long epochSecond = LocalDateTime.now().plusHours(1).toEpochSecond(ZoneOffset.UTC);
        userLoginTokenVO.setExpireTime(LocalDateTime.now().plusHours(1).toString());
        return userLoginTokenVO;
    }

    //构建登录的token（当第一次登录认证时）
    public static UserLoginTokenVO buildAccount(String userAccount,String accessToken, String uuid)  {
        UserLoginTokenVO userLoginTokenVO = new UserLoginTokenVO();
        userLoginTokenVO.setAccessToken(accessToken);
        userLoginTokenVO.setUuid(uuid);
        userLoginTokenVO.setExpireTime(null);
        userLoginTokenVO.setUserAccount(userAccount);
        userLoginTokenVO.setIsFirstLogin(true);
        return userLoginTokenVO;
    }

}
